跳到主要内容

节点接口(Node)

节点脚本可用于渲染形状、图像、文本、画板等。 脚本化节点可附加到任意 Node 上,并在宿主节点的本地变换空间中渲染。

更多信息请参阅 节点脚本(Node Scripts)

方法(Methods)

init

init(self: T, context: Context) -> boolean

节点创建时调用一次。如果初始化成功则返回 true。

有关使用 init 的更完整示例,请参阅 实例化组件

-- 定义脚本的数据和输入。
type MyNode = {}

-- 脚本初始化时调用一次。
function init(self: MyNode, context: Context): boolean
return true
end

-- 返回一个工厂函数,Rive 使用它来构建 Node 实例。
return function(): Node<MyNode>
return {
init = init
}
end

advance

advance(self: T, seconds: number) -> boolean

可选的每帧更新。如果节点应继续接收 advance 调用则返回 true。

有关使用 advance 的更完整示例,请参阅 固定步长前进

-- 定义脚本的数据和输入。
type MyNode = {}

-- 每帧调用以推进模拟。
-- 'seconds' 是自上一帧以来经过的时间。
function advance(self: MyNode, seconds: number): boolean
return false
end

-- 返回一个工厂函数,Rive 使用它来构建 Node 实例。
return function(): Node<MyNode>
return {
advance = advance,
}
end

update

update(self: T) -> ()

当输入值变化时调用。

-- 定义脚本的数据和输入。
type MyNode = {}

-- 当任何脚本输入值变化时调用。
function update(self: MyNode)
print('An script input value has changed.')
end

-- 返回一个工厂函数,Rive 使用它来构建 Node 实例。
return function(): Node<MyNode>
return {
update = update,
}
end

draw

draw(self: T, renderer: Renderer) -> ()

调用以使用提供的 渲染器(Renderer) 渲染节点。

有关使用 draw 的更完整示例,请参阅 实例化组件

-- 定义脚本的数据和输入。
type MyNode = {}

-- 每帧调用(在 advance 之后)以渲染内容。
function draw(self: MyNode, renderer: Renderer) end

-- 返回一个工厂函数,Rive 使用它来构建 Node 实例。
return function(): Node<MyNode>
return {
draw = draw,
}
end

drawCanvas

drawCanvas(self: T) -> ()

在 drawCanvases 阶段(在 draw 之前)调用。 所有 canvas:beginFrame / canvas:beginRenderPass 调用都必须在此处进行。

pointerDown

pointerDown(self: T, event: PointerEvent) -> ()

指针按下事件处理函数。

function handlePointerDown(self: MyGame, event: PointerEvent)
print('Pointer Position: ', event.position.x, event.position.y)

event:hit()
end

return function(): Node<MyGame>
return {
init = init,
advance = advance,
draw = draw,
pointerDown = handlePointerDown,
}
end

pointerMove

pointerMove(self: T, event: PointerEvent) -> ()

指针移动事件处理函数。

function handlePointerMove(self: MyGame, event: PointerEvent)
print('Pointer Position: ', event.position.x, event.position.y)

event:hit()
end

return function(): Node<MyGame>
return {
init = init,
advance = advance,
draw = draw,
pointerMove = handlePointerMove,
}
end

pointerUp

pointerUp(self: T, event: PointerEvent) -> ()

指针抬起事件处理函数。

function handlePointerUp(self: MyGame, event: PointerEvent)
print('Pointer Position: ', event.position.x, event.position.y)

event:hit()
end

return function(): Node<MyGame>
return {
init = init,
advance = advance,
draw = draw,
pointerUp = handlePointerUp,
}
end

pointerExit

pointerExit(self: T, event: PointerEvent) -> ()

指针离开事件处理函数。

function handlePointerExit(self: MyGame, event: PointerEvent)
print('Pointer Position: ', event.position.x, event.position.y)

event:hit()
end

return function(): Node<MyGame>
return {
init = init,
advance = advance,
draw = draw,
pointerExit = handlePointerExit,
}
end